One difficulty encountered by today's computer system software programmers is that of needing to modify configuration software whenever computer hardware component designers change the address location of structures within computer system devices. This situation commonly occurs when hardware component designers create new versions of computer system devices. Some of the changes may occur due to the inclusion of new technologies within the computer system.
One example of the difficulties encountered by software programmers in keeping up with the changes made by hardware designers is in the area of relocating structures within a device's configuration space. Currently, when a hardware designer moves a structure within the configuration space of a device, basic input/output system (BIOS) software engineers must modify the equates specifying the offset of a register to match the new configuration space map.
One of the more major computer system component interconnect technologies over the last decade has been the Peripheral Component Interconnect (PCI). A newer interconnect technology that is beginning to emerge and is expected to gain wide acceptance is PCI Express. Both the PCI and the PCI Express specifications (PCI Local Bus Specification, revision 2.3; PCI Express Base Specification, revision 1.0a) allow hardware designers to move pre-defined structures to different locations within the configuration space of a device.